package com.lqq.chapter12;

import java.util.concurrent.CompletableFuture;

/**
 * @Author lqq677
 * @Date 2021/8/12 23:00
 * @Description  没有返回值的异步任务
 */
public class CompletableFutureDemo2 {

    public static void main(String[] args) throws Exception{

        System.out.println("主线程开始");

        /**
         * 返回一个新的 CompletableFuture，它在运行给定操作后由在ForkJoinPool.commonPool()运行的任务异步完成。
         * 参数：
         * runnable – 在完成返回的 CompletableFuture 之前运行的操作
         * 返回：
         * 新的 CompletableFuture
         *
         *  public static CompletableFuture<Void> runAsync(Runnable runnable) {
         *       return asyncRunStage(asyncPool, runnable);
         *  }
         */
        //运行一个没有返回值的异步任务
        CompletableFuture future = CompletableFuture.runAsync(() -> {
            try {
                System.out.println("子线程启动干活...");
                Thread.sleep(5000);
                System.out.println("子线程完成...");
                } catch (Exception e) {
                    e.printStackTrace();
                }
                }
        );

        //主线程阻塞,get方法可以一直阻塞直到子任务结束
        future.get();
        System.out.println("主线程结束");

    }
}
